package com.ciei.dpagm.util;

import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author wangqiuxiang
 *
 */
public class FileUtil {
	
	public static boolean isImage(String fileName){
		if(!StringUtils.isBlank(fileName)){
			String suffix = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
			if(".gif .jpeg .jpg .png .bmp".contains(suffix)){
				return true;
			}
		}
		return false;
	}

	/**
	 * 文件大小换算  1024M = 1G
	 * @param s
	 * @return
	 */
	public static String convertSize(long s) {
		//如果字节数少于1024，则直接以B为单位，否则先除于1024，后3位因太少无意义
		double size = s;
		if (size < 1024) {
			return String.valueOf((long)size) + "B";
		} else {
			size = size / 1024;
		}
		//如果原字节数除于1024之后，少于1024，则可以直接以KB作为单位
		//因为还没有到达要使用另一个单位的时候
		//接下去以此类推
		if (size < 1024) {
			return String.valueOf((long)size) + "KB";
		} else {
			size = size / 1024;
		}
		if (size < 1024) {
			//因为如果以MB为单位的话，要保留最后1位小数，
			//因此，把此数乘以100之后再取余
			return String.format("%.2fMB", size);
		} else {
			//否则如果要以GB为单位的，先除于1024再作同样的处理
			size = size / 1024;
			return String.format("%.2fGB", size);
		}
	}

	/**
	 * 复制文件
	 * @param sourcePath    原文件绝对路径
	 * @param newPath       新文件绝对路径
	 * @return              是否复制成功
	 */
	public static boolean copyFile(String sourcePath, String newPath) {
		File sourceFile = new File(sourcePath);
		File targetFile = new File(newPath);
		try (FileInputStream in = new FileInputStream(sourceFile);
			 FileOutputStream out = new FileOutputStream(targetFile)) {
			byte[] buffer = new byte[2 * 1024 * 1024];
			int readByte;
			while((readByte = in.read(buffer)) != -1) {
				out.write(buffer, 0, readByte);
			}
			return true;
		} catch (IOException e) {
		}

		return false;
	}

}
